#ifndef __PI_REGULATOR_H
#define __PI_REGULATOR_H

#include "motor.h"
typedef struct
{
 	int16_t  Ref;	//Q14
	int16_t  Fdb;	//Q14
	int32_t  Err; //Q14
	int16_t  Ki;	//Q14
	int16_t  Kp;  //Q10
	int32_t  Up;	//Q14
	int32_t  Ui;	//Q28
	int16_t  OutMin;//Q14
	int16_t  OutMax;//Q14
	int16_t  Out;//Q14
}PI_t;

typedef struct
{
	int16_t  qKp;
	int16_t  qKi;
	int16_t  qOutMax;
	int16_t  qOutMin;
	int32_t  qRef;
	int32_t  qFdb;

	int32_t  Error;

	int16_t  qSpeedOut;//q14
	int16_t  qAngleOut;//q14
	int32_t  Ui;
}PLL_t;

extern PI_t IdLoop;
extern PI_t IqLoop;
extern PI_t SpeedLoop;
extern PLL_t FluxPLL;
void PI_Calc(PI_t *v);

void PLL_CALC(PLL_t *v);

#endif
